package l1j.opqlo.NewSystem.NpcAction;

import java.util.ArrayList;
import java.util.HashMap;

import l1j.server.server.datatables.FusionTable;
import l1j.server.server.datatables.ItemTable;
import l1j.server.server.model.L1Inventory;
import l1j.server.server.model.Instance.L1ItemInstance;
import l1j.server.server.model.Instance.L1PcInstance;
import l1j.server.server.serverpackets.S_ServerMessage;
import l1j.server.server.serverpackets.S_SystemMessage;
import l1j.server.server.templates.L1FusionTemp;

public class ItemFusion {

//	private static final Logger _log = Logger.getLogger(ItemFusion.class.getName());

	private static HashMap<String, Integer>_map;


	public static void load(){
		_map = new HashMap<String , Integer>();
		_map.put("無種族", 610036);
		_map.put("不死族", 610037);
		_map.put("惡魔族", 610038);
		_map.put("頭目族", 610039);
		_map.put("亡靈族", 610040);
		_map.put("狼族", 610041);
		_map.put("龍族", 610042);
		_map.put("魔法", 610043);
		_map.put("25臂甲", 810064);
		_map.put("20臂甲",810005 );
		_map.put("殺斬臂甲",810088 );
		_map.put( "Q49" , 78041 );// 5%完美武卷
		_map.put( "Q410" , 78044 );// 5%完美防卷
		_map.put( "Q411" , 78042 );// 10%完美武卷
		_map.put( "Q412" , 78045 );// 10%完美防卷
		_map.put( "Q413" , 78043 );// 15%完美武卷
		_map.put( "Q414" , 78046 );// 15%完美防卷
		_map.put( "Q415" , 78040 );// 50%完美武卷
		_map.put( "Q416" , 78039 );// 50%完美防卷
		_map.put( "Q417" , 78059 );// 10%高級完美武卷
		_map.put( "Q418" , 78062 );// 10%高級完美防卷
		_map.put( "Q419" , 78060 );// 20%高級完美武卷
		_map.put( "Q420" , 78063 );// 20%高級完美防卷
		_map.put( "Q421" , 78061 );// 30%高級完美武卷
		_map.put( "Q422" , 78064 );// 30%高級完美防卷
		_map.put( "Q423", 610030);// 地神武器強化卷軸
		_map.put( "Q424", 610032);// 火神武器強化卷軸
		_map.put( "Q425", 610031);// 水神武器強化卷軸
		_map.put( "Q426", 610029);// 風神武器強化卷軸
		_map.put( "Q427", 610033);// 光神武器強化卷軸
		_map.put( "Q428", 610034);// 闇神武器強化卷軸
		_map.put( 	"Q429"	, 	780111	);// 	斗篷升級卷
		_map.put( 	"Q430"	, 	780113	);// 	一階符文石袋



	}


	public void Action(String action , L1PcInstance pc){
		if(!_map.containsKey(action)){
			return;
		}
		if(pc.isDead() || pc.getNetConnection() ==null || pc.isTeleport()){
			return;
		}
		final int itemid = _map.get(action);
		if(itemid >0){
			final ArrayList<L1FusionTemp> list =FusionTable.get().getList(itemid);
			if(list == null){
				return;
			}
			boolean check = true;
			final L1Inventory inv = pc.getInventory();
			for(final L1FusionTemp temp : list){
				if(!inv.checkItem(temp.getItemId(), temp.getAmount())){
					check = false;
					pc.sendPackets(new S_SystemMessage(temp.getName() +" 數量不足 "+temp.getAmount()+"個。"));
				}
			}
			if(check == false){
				return;
			}
			for(final L1FusionTemp temp : list){
				final int id = temp.getItemId();
				inv.removeItemByItemId(id , temp.getAmount());
			}
			this.createNewItem(pc, itemid, FusionTable.get().getCount(itemid));
		}
	}

	private boolean createNewItem(L1PcInstance pc,final int item_id,final int count) {
		L1ItemInstance item = ItemTable.getInstance().createItem(item_id);
		if (item != null) {
			item.setCount(count);
//			if (pc.getInventory().checkAddItem(item, count) == L1Inventory.OK) {
				pc.getInventory().storeItem(item);
				pc.sendPackets(new S_ServerMessage(403, item.getLogName())); // %0を手に入れました。
				return true;
//			} else { // 持てない場合は地面に落とす 處理のキャンセルはしない（不正防止）
//				//L1World.getInstance().getInventory(pc.getX(), pc.getY(), pc.getMapId()).storeItem(item);
//				return false;
//			}
		} else {
			return false;
		}
	}

}
